package com.hxit.huaxiamelongarden.service.impl;

import com.hxit.huaxiamelongarden.service.SearchHistoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @ClassName SearchHistoryServiceImpl
 * @description 历史记录逻辑实现类
 * @Author 12694
 * @Date 2025/1/30 15:37
 * @Version 1.0
 **/
@Service
public class SearchHistoryServiceImpl implements SearchHistoryService {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    // Redis 键的前缀
    private static final String SEARCH_HISTORY_KEY_PREFIX = "user:%s:searchHistory";  // 格式化为具体用户的搜索历史

    // 最大历史记录数量
    private static final int MAX_HISTORY_SIZE = 10;

    /**
     * 查询某个用户的历史搜索记录
     */
    public List<String> getSearchHistory(int userId) {
        String key = String.format(SEARCH_HISTORY_KEY_PREFIX, userId);
        return redisTemplate.opsForList().range(key, 0, -1);  // 获取所有历史记录
    }

    /**
     * 添加搜索记录
     */
    public void addSearchHistory(int userId, String keyword) {
        String key = String.format(SEARCH_HISTORY_KEY_PREFIX, userId);

        // 将新的搜索记录添加到列表头部
        redisTemplate.opsForList().leftPush(key, keyword);

        // 保证列表的最大长度为 MAX_HISTORY_SIZE
        redisTemplate.opsForList().trim(key, 0, MAX_HISTORY_SIZE - 1);  // 保留最近的 MAX_HISTORY_SIZE 条记录
    }
}
